14876
8755
Jag har en datamängd enligt nedan
namn col1 col2
a 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4.5 4.0
Jag vill jämföra col1 och col2 i min df och jag vill skapa en annan kolumn där medan jag jämför col1- och col2-värden om värdet på col2 ökar från col1 så vill jag ange att öka bredvid dem i min kolumn där och om minskar då vill jag skriva minskande och inga ändringar om de är desamma
och jag vill ha min produktion så här
namn col1 col2 col3
en 10,3 10,9 ökning
b 11 15 ökar
c 20 7.2 minskar
d 6.2 6.2 ingen förändring
e 5.3 5.4 ökar
f 4,5 4,0 minskar 
Med dplyr:
df%>%
mutera (Col3 = ifelse (col2 == col1,
"ingen förändring",
ifelse (col2> col1,
"ökar", "minskar")))
Eller använda case_when som föreslås av @akrun:
df%>%
mutera (Col3 = case_when (col1 == col2 ~ "ingen förändring",
col2> col1 ~ "Ökar",
SANT ~ "minskar"))
Resultat:
namn col1 col2 Col3
1 a 10,3 10,9 ökar
2 b 11,0 15,0 ökar
3 c 20,0 7,2 minskar
4 d 6,2 6,2 ingen ändring
5 e 5.3 5.4 ökar
6 f 4,5 4,0 minskar
Data:
df <-struktur (lista (namn = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Vi kan subtrahera col1 för col2 och sedan använda sign för att tilldela värden
df $ col3 <- c ("minskar", "ingen förändring", "ökar") [tecken (df $ col1 - df $ col2) + 2]
df
# namn col1 col2 col3
# 1 a 10.3 10.9 minskar
# 2 b 11,0 15,0 minskar
# 3 c 20.0 7.2 ökar
# 4 d 6.2 6.2 ingen förändring
# 5 e 5.3 5.4 minskar
# 6 f 4.5 4.0 ökar
Eller med dplyr kan vi använda case_when
bibliotek (dplyr)
df%>%
mutera (col3 = case_when (col1 == col2 ~ "ingen förändring",
col1> col2 ~ "ökar",
SANT ~ "minskar"))
|
Bas R
df $ col3 <-med (df, ifelse (col1> col2, "minskande",
ifelse (col1